package cn.xiaolang.function.timerVSquartz;
//引入quartz-2.2.1.jar包
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 *  对于一个调度作业，通常有两个因素构成：调度的内容【What】:即调度具体做什么工作，
 *  例如是发邮件、系统备份；调度的时间【when】:什么时候工 作，这个又包含两个内容，开始时间【调度第一次执行的时间】，
 *  调度时间【在调度开始之后，在什么时间的时候，执行定义的调度工作】。
    Quartz框架提供了Job接口和Trigger接口来分别对应调度的内容和调度时间，由于Job接口和Trigger接口是完全分离的，
         彼此互不关 心，他们之间要建立某种关联，就需要通过Scheduler来帮助他们建立联系。
    Quartz启动时，会初始化一套work线程池，这套线程被用于执行预定义的调度作业。
    Job和Trigger的关联根据配置的不同【基于内存的调度、 基于数据库的调度】而不同：
         如果是基于内存的调度，那么Job信息和Trigger信息分别放到两个HashMap中，通过RAMJobSupport来 建立关联；
         如果是基于数据库的调度，Job信息、Tirgger信息以及它们的关联信息都被存到数据库表中。
 */
public class Quartz4Job implements Job{

	/**
	 * 创建一个Quartz Job类，必须实现 org.quartz.Job ，
	 * 这个接口只有一个你要实现的方法,execute方法，其中execute的接口定义如下  
       void execute(JobExecutionContext  context)  throws JobExecutionException;
                当Quartz调度器到约定的时间，它就会生成一个Job的实例，所以你实现Job接口　必须提供一个公有函数，
                否则会抛出异常，并调用execute方法．其中调度器只管执行，而不关心结果，除非抛出JobExecutionException异常．
　            JobExecutionContext 中封装有Quartz运行所需要的所有信息，可以参见下面具体的代码片段．
	 */
	@Override
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		// 添加动作
		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//格式样式
		long now = System.currentTimeMillis();//当前毫秒值
		Calendar calendar = Calendar.getInstance();//日期对象
		calendar.setTimeInMillis(now);
		System.out.println("xiaolang=="+dateFormat.format(calendar.getTime()));
	}
}
